/**
 * 
 */
package com.ai.databao.web.system.util;

import java.text.DecimalFormat;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 与数字相关的工具类
 * @author xiongqian
 *
 */
public class VelocityToolsUtils {
	
	private final Logger log = LoggerFactory.getLogger(this.getClass().getName());

	
	/**
	 * 格式化数字
	 * @param input  数字
	 * @param formater 格式
	 * @return
	 */
	public String formatNumber(String input,String formater){
		
		try{
		
			if(StringUtils.isBlank(input)){
				return "0";
			}
			
			double number = 0D;
			///如果传入的非数字，则展示为 原来的值；
			try{
				number = Double.parseDouble(input);
				
				if(Double.isNaN(number)){
					number = 0D;
				}
				
			} catch(Exception err){
				return input;
			}
			
			DecimalFormat decFormatter = new DecimalFormat(formater);
			
			return decFormatter.format(number);
		}catch(Exception e){
			e.printStackTrace();
			
			log.error("数字格式化错误", e);
			return input;
		}
	}
	
	/**
	 * 格式化百分比
	 * @param input 浮点数
	 * @param formater 格式
	 * @return  {input*100}%
	 */
	public String showPercentNumber(String input,String formater){
		try{
		
			if(StringUtils.isBlank(input)){
				return "0%";
			}
			
			double number = 0D;
			///如果传入的非数字，则展示为 原来的值；
			try{
				number = Double.parseDouble(input);
				
				if(Double.isNaN(number)){
					number = 0D;
				}
				
			} catch(Exception err){
				return input;
			}
			
			number = number*100;
			
			if(Double.isInfinite(number)){
				return "--";
			}
			
			DecimalFormat decFormatter = new DecimalFormat(formater);
			
			return decFormatter.format(number) +"%";
			
		}catch(Exception e){
			e.printStackTrace();
			log.error("数字格式化错误", e);
			return input;
		}
	}
	
	/**
	 * 格式化金额
	 * @param input 浮点数
	 * @param formater 格式
	 * @return  {input/100}
	 */
	public String showMoneyNumber(String input,String formater){
		try{
		
			if(StringUtils.isBlank(input)){
				return "0%";
			}
			
			double number = 0D;
			///如果传入的非数字，则展示为 原来的值；
			try{
				number = Double.parseDouble(input);
				
				if(Double.isNaN(number)){
					number = 0D;
				}
				
			} catch(Exception err){
				return input;
			}
			
			number = number/100;
			DecimalFormat decFormatter = new DecimalFormat(formater);
			
			String resStr = decFormatter.format(number);
			if(resStr.indexOf(".") > 0){  
				resStr = resStr.replaceAll("0+?$", "");//去掉多余的0  
				resStr = resStr.replaceAll("[.]$", "");//如最后一位是.则去掉  
		    }
			
			return resStr;
			
		}catch(Exception e){
			e.printStackTrace();
			log.error("数字格式化错误", e);
			return input;
		}
	}
	
}